"""
>> 和 <<  属于 python 位运算符

<<  :是左移动运算符,运算数的各二进位全部左移若干位，由 << 右边的数字指定了移动的位数，高位丢弃，低位补0。
a                0011 1100
a << 2           1111 0000
十进制结果         240

>> :右移动运算符：把">>"左边的运算数的各二进位全部右移若干位，>> 右边的数字指定了移动的位数
a         0011 1100
a >> 2    0000 1111
十进制结果   15


自己的记忆：左移记住是乘，右移是除
a << 3  -> 相当于 a 乘 2的3次方
a >> 3  -> 相当于 a 除 2的3次方


按位的运算，都按位的运算，都是把参加运算的数的二进制形式进行运算。

    1.与运算：A与B值均为1时，A、B与的运算结果才为1，否则为0 （运算符：&）

    2.或运算：A或B值为1时，A、B或的运算结果才为1，否则为0  （运算符：|）

    3.异或运算：A与B不同为1时，A、B的预算结果才为1，否则为0  （运算符：^）

    4.按位翻转(按位取反)：将内存中表示数字的2进制数取反0取1，1取0 (运算符：~)
"""

a = 2
print(a << 3)  # 相当于 a 乘 2的3次方

a = 32
print(a >> 3)  # 相当于 a 除 2的3次方

"""
32：      100000
1：       000001
按位与：   000000 -> 0 -> &   两个相同的数会变成1，反之是0
按位或：   100001 -> 33 -> |  只要有1就变成1，反之是0
按位异或   100001 -> 33 -> ^  两个相同的数会变成0，反之是1
"""
print(32 & 1)
print(32 | 1)
print(32 ^ 1)
